'''
    运算符重载是指赋予内置运算符新的功能,使内置运算符能适应更多的数据类型.当定义一个类时,如果这个类中重写了Python基类object内置的有关运算符的特殊方法,
那么该特殊方法对应的运算符将支持对该类的实例进行运算.
'''
'''基类object中提供的一些特殊方法及其对应的运算符如下所示:'''
#  特殊方法                   运算符
#  __add__()                  +
#  __sub__()                  -
#  __mul__()                  *
#  __truediv__()              /
#  __mod__()                  %
#  __pow__()                  **
#  __contain__()              in

'''
    下面定义一个Calculator类,并重写该类的特殊方法__add__(),__sub__(),__mul__(),__truediv__(),使运算符+,-,*,/能够支持针对Calculator
对象的运算,具体代码如下:
'''

# 定义一个表示计算器的类:
class Calculator:
    def __init__(self,number):
        self.number = number   # 记录数值
    def __add__(self, other):  # 重载运算符+
        self.number = self.number + other
        return self.number
    def __sub__(self, other):
        self.number = self.number - other
        return self.number
    def __mul__(self, other):
        self.number = self.number * other
        return self.number
    def __truediv__(self, other):
        self.number = self.number / other
        return self.number

calculator = Calculator(10)
print(calculator + 5)  # 10+5=15，然后calculator.number变为15
print(calculator - 5)  # 15-5=10，然后calculator.number变为10
print(calculator * 5)  # 10*5=50，然后calculator.number变为50
print(calculator / 5)  # 50/5=10.0，然后calculator.number变为10.0

# 从以上结果可以看出,对运算符进行重载后,自定义类Calculator也可以进行四则运算
